/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.javahispano.javacup.tacticas_aceptadas.Arturo8a.AlianzaLima;

import org.javahispano.javacup.modelo.Posicion;
import org.javahispano.javacup.modelo.SituacionPartido;

/**
 *
 * @author Administrador
 */
public class Herramientas {

    public static double distancia2Puntos(Posicion a,Posicion b){
        double distancia = Math.sqrt(Math.pow(a.getX()-b.getX(),2)+Math.pow(a.getY()-b.getY(),2));
        return distancia;
    }



    public boolean esGol(Posicion a){
        return ((a.getX()>=160) && (a.getY()>-30) && (a.getY()<30));
    }
    public static boolean esJugadorMasCercanoenVentaja(SituacionPartido sp,int n){
		Posicion[] misJugadores = sp.misJugadores();
        Posicion[] misRivales = sp.rivales();
        Posicion yo = misJugadores[n];

		double distanciaMinima = 1000;
		Posicion ellos = null;
		for (int i = 0; i < 11; i++){
			double dist = distancia2Puntos(yo, misRivales[i]);
			if (dist < distanciaMinima){
				ellos = misRivales[i];
			}
		}

		return distancia2Puntos(yo, sp.balon()) >= distancia2Puntos(ellos, sp.balon());
	}
    public static double getAngulo(double x0, double y0, double xD, double yD){
        double ang=0;
        double dy=yD-y0;
        double dx=xD-x0;
        if (dx>0) ang=Math.atan(dy/dx);
        else if (dx<0) ang=Math.atan(dy/dx)+Math.PI;
        else if (y0<yD) ang=Math.PI/2;
        else ang=-Math.PI/2;
        ang=corregirAngulo(ang);
        return ang;
    }

    public static double corregirAngulo(double ang){
        while (ang<0)
            ang+=Math.PI*2;
        while (ang>=Math.PI*2)
            ang-=Math.PI*2;
        return ang;
    }

}
